Ext.namespace('shbx.jbyl.gygl');

shbx.jbyl.gygl.gyzxqsgl = function(config) {
	Ext.QuickTips.init();
	Ext.apply(this, config);
	this.initComponentUI();
	shbx.jbyl.gygl.gyzxqsgl.superclass.constructor.call(this);
}

Ext.extend(shbx.jbyl.gygl.gyzxqsgl, Ext.Panel, {

	// 初始化组件
	initComponentUI : function() {

		// 列表数据源
		this.store = new Ext.data.Store({
			// autoLoad : true,
			proxy : new Ext.data.HttpProxy({
				// url : ExtJ.getContextPath() + '/shbx/jbyl/sjhz/hzzgsj.json'
				url : ExtJ
						.getActionPath(
								"com.suyuan.jbyl.action.MtProvideOptionAction",
								"query")
			}),
			reader : new Ext.data.JsonReader({
				root : 'data',
				totalProperty : 'total',
				idProperty : "id"
			}, [{
				name : 'id',
				mapping : 'id'
			}, {
				name : 'dwm',
				mapping : 'dwm'
			}, {
				name : 'dwdm',
				mapping : 'dwdm'
			}, {
				name : 'tbr',
				mapping : 'tbr'
			}, {
				name : 'xm',
				mapping : 'xm'
			}, {
				name : 'csny',
				mapping : 'csny'
			}, {
				name : 'xb',
				mapping : 'xb'
			}, {
				name : 'shbzh',
				mapping : 'shbzh'
			}, {
				name : 'rylb',
				mapping : 'rylb'
			}, {
				name : 'tlbmch',
				mapping : 'tlbmch'
			}, {
				name : 'ybJe',
				mapping : 'ybJe'
			}, {
				name : 'ybBfje',
				mapping : 'ybBfje'
			}, {
				name : 'ybGybh',
				mapping : 'ybGybh'
			}, {
				name : 'ybGyxm',
				mapping : 'ybGyxm'
			}, {
				name : 'ybYlj',
				mapping : 'ybYlj'
			}, {
				name : 'ybHlf',
				mapping : 'ybHlf'
			}, {
				name : 'ybQnf',
				mapping : 'ybQnf'
			}, {
				name : 'ybLmjt',
				mapping : 'ybLmjt'
			}, {
				name : 'ybYrbt',
				mapping : 'ybYrbt'
			}, {
				name : 'ybFffsmch',
				mapping : 'ybFffsmch'
			}, {
				name : 'swSwsj',
				mapping : 'swSwsj'
			}, {
				name : 'swSzf',
				mapping : 'swSzf'
			}, {
				name : 'swFxf',
				mapping : 'swFxf'
			}, {
				name : 'swJjf',
				mapping : 'swJjf'
			}, {
				name : 'swJstz',
				mapping : 'swJstz'
			}, {
				name : 'swImportDt',
				mapping : 'swImportDt'
			}, {
				name : 'ybImportDt',
				mapping : 'ybImportDt'
			}, {
				name : 'bank',
				mapping : 'bank'
			}, {
				name : 'bankNum',
				mapping : 'bankNum'
			}, {
				name : 'bankNm',
				mapping : 'bankNm'
			}, {
				name : 'ygybt',
				mapping : 'ygybt'
			}, {
				name : 'corpName',
				mapping : 'corpName'
			}, {
				name : 'status',
				mapping : 'status'
			},{
				name : 'ssfxf',
				maping : 'ssfxf'
			},{
				name : 'summitTime',
				maping : 'summitTime'
			}
			])
		});
		this.store.baseParams.spRoleId = this.spRoleId;
		this.store.baseParams.orgId = this.orgId;
		this.store.load({
			params : {
				start : 0,
				limit : 20
			}
		});
		this.eug_gs = new Ext.ux.grid.GridSummary();
		this.sm = new Ext.grid.CheckboxSelectionModel();
		var column = new Ext.grid.ColumnModel([this.sm, {
			header : '单位代码',
			width : 80,
			sortable : true,
			dataIndex : 'dwdm',
			renderer : function(v, m, r, ro, c, s) {
				var obj = r.data;
				if (obj.status == '1') {
					return v;
				} else {
					return '<font color="red">' + v + '</font>';
				}
			}
		}, {
			header : '单位名称',
			width : 110,
			sortable : true,
			dataIndex : 'corpName'
		}, {
			header : '个人代码',
			width : 80,
			sortable : true,
			dataIndex : 'tbr',
			renderer : function(v, m, r, ro, c, s) {
				var obj = r.data;
				if (obj.status == '1') {
					return v;
				} else {
					return '<font color="red">' + v + '</font>';
				}
			}
		}, {
			header : '姓名',
			width : 50,
			sortable : true,
			dataIndex : 'xm',
			renderer : function(v, m, r, ro, c, s) {
				var obj = r.data;
				if (obj.status == '1') {
					return v;
				} else {
					return '<font color="red">' + v + '</font>';
				}
			}
		}, {
			header : '丧葬抚恤费',
			width : 80,
			sortable : true,
			renderer: 'cnMoney',
			summaryType : 'remoteSum',
			dataIndex : 'ssfxf'
		}, {
			header : '供养代码',
			width : 100,
			sortable : true,
			dataIndex : 'ybGybh'
		}, {
			header : '供养姓名',
			width : 80,
			sortable : true,
			dataIndex : 'ybGyxm'
		}, {
			header : '供养月补贴',
			width : 80,
			sortable : true,
			renderer: 'cnMoney',
			summaryType : 'remoteSum',
			dataIndex : 'ygybt'
		}, {
			header : '下发时间',
			width : 80,
			sortable : true,
			dataIndex : 'summitTime'
		}, {
			header : '开户行',
			width : 80,
			sortable : true,
			dataIndex : 'bank'
		}, {
			header : '户名',
			width : 80,
			sortable : true,
			dataIndex : 'bankNm'
		}, {
			header : '开户行账号',
			width : 140,
			sortable : true,
			dataIndex : 'bankNum'
		}]);

		var pagingToolbar = new Ext.PagingToolbar({
			pageSize : 20,
			displayInfo : true,
			store : this.store,
			displayMsg : '显示第 {0} 条到 {1} 条记录，一共 {2} 条',
			emptyMsg : "没有记录"
		});

		this.grid = new Ext.grid.GridPanel({
			region : 'center',
			store : this.store,
			sm : this.sm,
			bbar : pagingToolbar,
			autoScroll : true,
			cm : column,
			viewConfig : {
				autoFill : false,
				forceFit : false
			},
			plugins : this.eug_gs,
			collapsible : false,
			animCollapse : false,
			loadMask : {
				msg : '数据加载中...'
			}
		});
		this.menu = new Ext.menu.Menu({
			id : 'mainMenu',
			shadow : false,
			items : [{
				text : '[sw]导入丧葬数据',
				handler : this.onTxtReceiveSW.createDelegate(this),
				iconCls : 'edit'
			}]
		});
		this.menu.addSeparator();
		this.menu.addMenuItem({
			text : '[yb]导入供养数据',
			handler : this.onTxtReceiveYB.createDelegate(this),
			iconCls : 'edit'
		});

		this.DR =  new Ext.Button({
			text : '导入数据',
			tooltip : '',
			menu : this.menu,
			iconCls : 'edit'
		});
		
		var menuExcel = new Ext.menu.Menu({
			id : 'mainMenu',
			shadow : false,
			items : [{
				text : '导出供养汇总表',
				handler : this.onExportHZ.createDelegate(this),
				iconCls : 'edit'
			}]
		});
		menuExcel.addSeparator();
		menuExcel.addMenuItem({
			text : '导出供养明细表',
			handler : this.onExportMX.createDelegate(this),
			iconCls : 'edit'
		});
		this.recConfig = 0;

		this.HB =  new Ext.Button({
			text : '合并',
			tooltip : '',
			iconCls : 'export',
			handler : this.onHB.createDelegate(this)
		});
		
		this.SCBB = new Ext.Button({
			text : '生成财务报表',
			tooltip : '',
			iconCls : 'excel',
			handler : this.onShow.createDelegate(this)
		})
		
		this.centerPanel = new Ext.Panel({
			region : 'center',
			layout : 'border',
			frame : false,
			tbar : [this.comTree = new system.org.CompanyCombo({
				fieldLabel : '选择单位',
				emptyText : '按[单位]查询',
				orgId : this.orgId
			}), this.searchMonth = new Ext.ux.MonthField({
				format : 'Y-m',
				value : new Date(),
				readOnly : true,
				fieldLabel : '[查询][丧葬/供养]月份',
				emptyText : '按[月份]查询',
				width : 120
			}), new Ext.Button({
				text : '查询',
				tooltip : '',
				iconCls : 'query',
				handler : this.onSearch.createDelegate(this)
			}), new Ext.Button({
				text : '查看',
				tooltip : '',
				iconCls : 'query',
				handler : this.onView.createDelegate(this)
			}), '&nbsp;', this.receiveMonth = new Ext.ux.MonthField({
				format : 'Y-m',
				readOnly : true,
				fieldLabel : '[导入][丧葬/供养]月份',
				emptyText : '选择[月份]',
				value : '',
				width : 120
			}), new Ext.Button({
				text : '导出EXCEL',
				tooltip : '',
				menu : menuExcel,
				iconCls : 'export'
			// handler : this.onExportExcel.createDelegate(this)
			})],
			items : [this.grid],
			listeners : {
				render : {
					fn : function() {
						
						this.onCheckFinanceApply();
						
						Ext.Ajax.request({
							url : ExtJ
									.getActionPath(
											"com.suyuan.jbyl.action.MtProvideOptionAction",
											"checkBySgs"),
							params : {
								orgId : this.orgId
							},
							success : function(response) {
							var bool = Ext.decode(response.responseText).success;
								if (bool) {
									this.centerPanel.getTopToolbar().add(this.DR);
									this.centerPanel.getTopToolbar().add(this.HB);
									this.centerPanel.getTopToolbar().add(this.SCBB);
								}
								this.onSum();
							}.createDelegate(this)
						})
					}.createDelegate(this)
				}
			}
		});
		Ext.apply(this, {
			layout : 'border',
			bodyStyle : 'padding:0px 0px 0px 5px',
			items : [this.centerPanel]
		});
	},
	
	/**
	 * 禁止重复上报
	 */
	onCheckFinanceApply : function(){
		Ext.Ajax.request({
			url : ExtJ
					.getActionPath(
							"com.suyuan.jbyl.action.FinanceReportAction",
							"checkFinanceApplyStatus"),
			params : {
				reportType : '02'
			},
			success : function(response) {
			var bool = Ext.decode(response.responseText).bool;
			if (bool) {
				this.SCBB.setDisabled(false);
			}
			}.createDelegate(this)
		})
	},
	
	/**
	 * 生成报表
	 */
	onShow : function(){
		var importDt = "";
		
		Ext.Ajax.request({
			url : ExtJ.getActionPath(
					"com.suyuan.jbyl.action.MtProvideOptionAction",
					"checkByMonth"),
			params : {
				importDt : importDt
			},
			success : function(response) {
				var bool = Ext.decode(response.responseText).success;
				if (bool) {
					var wind = new shbx.jbyl.gygl.gyffbbWindow({
						obj : this,
						spRoleId : this.spRoleId,
						orgId : this.orgId,
						orgName : this.orgName,
						userId : this.userId,
						importDt : importDt
					});
					wind.show();
					setWind(wind);
				} else {
					ExtJ.showMessage('本月没有导入数据!');
					return;
				}
			}.createDelegate(this)
		});
		
	},
	
	/**
	 * 汇总查询
	 */
	onSum : function(){
		
		var importDt = this.searchMonth.value;
		var node;
		try {
			node = this.comTree.getSelectedOrg();
		} catch (e) {
		}
		
		Ext.Ajax.request({
			url : ExtJ.getActionPath(
					"com.suyuan.jbyl.action.MtProvideOptionAction",
					"sum"),
			params : {
				orgId : this.orgId,
				importDt : importDt,
				corpIds : node
			},
			success : function(response) {
				var ssfxf = Ext.decode(response.responseText).ssfxf;
				var ygybt = Ext.decode(response.responseText).ygybt;
				this.eug_gs.summaryData={'ssfxf' : ssfxf,'ygybt' : ygybt};
				this.eug_gs.refreshSummary();
				
			}.createDelegate(this)
		})
	},
	
	/**
	 * 检查导入月份
	 */
	onCheckMonth : function(recConfig, importDt) {

		Ext.Ajax.request({
			url : ExtJ.getActionPath(
					"com.suyuan.jbyl.action.MtProvideOptionAction",
					"checkByMonth"),
			params : {
				importDt : importDt,
				flag : recConfig
			},
			success : function(response) {
				var bool = Ext.decode(response.responseText).success;
				if (bool) {
					Ext.MessageBox
							.confirm(
									'[丧葬/供养]导入',
									'【'
											+ importDt
											+ '】已存在数据,如果继续则覆盖原有数据',
									function(btn) {
										if (btn == 'yes') {
											this.onTxtReceive(recConfig);
										}
									}.createDelegate(this))
				} else {
//					Ext.MessageBox.confirm('[丧葬/供养]导入', '您【确定】此次操作么?',
//							function(btn) {
//								if (btn == 'yes') {
									this.onTxtReceive(recConfig);
//								}
//							}.createDelegate(this))
				}
			}.createDelegate(this)
		});
	},

	/**
	 * 导入
	 */
	onTxtReceiveSW : function() {

		var importDt = this.receiveMonth.value.trim();// 导入的月份（每个单位，每月只能一次）
		if (!importDt) {
			ExtJ.showMessage('请[选择月份]!');
			return;
		}

		Ext.MessageBox.confirm('[丧葬/供养]导入', '[EXCEL格式]确定导入[丧葬]吗?', function(btn) {
			if (btn == 'yes') {
				this.recConfig = 'SW';
				this.onCheckMonth(this.recConfig, importDt);
			}
		}.createDelegate(this))

	},
	/**
	 * 导入
	 */
	onTxtReceiveYB : function() {
		var importDt = this.receiveMonth.value.trim();// 导入的月份（每个单位，每月只能一次）
		if (!importDt) {
			ExtJ.showMessage('请[选择月份]!');
			return;
		}

		Ext.MessageBox.confirm('[丧葬/供养]导入', '[EXCEL格式]确定导入[供养]吗?', function(btn) {
			if (btn == 'yes') {
				this.recConfig = 'YB';
				this.onCheckMonth(this.recConfig, importDt);
			}
		}.createDelegate(this))
	},
	/**
	 * 导入
	 */
	onTxtReceive : function(recConfig) {

		var importDt = this.receiveMonth.value.trim();// 导入的月份（每个单位，每月只能一次）
		if (!importDt) {
			ExtJ.showMessage('请[选择月份]!');
			return;
		}
		var url = ExtJ.getActionPath(
				'com.suyuan.jbyl.action.MtProvideOptionAction', 'excelReceive',
				{
					importDt : importDt,
					flag : recConfig
				});
		var dialog = new shbx.jbyl.ycxzf.importDialog({
			url : url,
			store : this.store
		});
		dialog.show();
		// var dialog = new Ext.ux.UploadDialog.Dialog({
		// autoCreate : true,
		// closable : true,
		// collapsible : false,
		// draggable : true,
		// minWidth : 400,
		// minHeight : 200,
		// width : 600,
		// height : 400,
		// isMultipart : false,
		// proxyDrag : true,
		// resizable : true,
		// modal : true,
		// constraintoviewport : true,
		// title : '[丧葬/供养]数据导入',
		// url : url,
		// reset_on_hide : false,
		// allow_close_on_upload : true
		// });
		//			
		// dialog.show();
		// //Ext.ux.UploadDialog.Dialog 此控件关闭是hide事件
		// dialog.on('hide', this.onSx.createDelegate(this));

	},
	// /**
	// * 上传后刷新本页面
	// */
	// onSx : function() {
	// this.store.removeAll();
	// this.store.reload();
	// },
	/**
	 * 按导入月份查询
	 */
	onSearch : function() {

		var importDt = this.searchMonth.value;
		this.store.baseParams.importDt = importDt;

		var node;
		try {
			node = this.comTree.getSelectedOrg();
			this.store.baseParams.corpIds = node;
		} catch (e) {
		}

		this.store.removeAll();
		this.store.reload({
			params : {
				start : 0,
				limit : 20
			}
		});
		this.onSum();
	},

	onView : function() {
		var record = this.grid.getSelectionModel().getSelected();
		if (!record) {
			ExtJ.showMessage('请选择一行数据!');
			return;
		}
		var wind = new shbx.jbyl.gygl.gyzxqsglView({
			mtProvideId : record.data.id
		});
		wind.show();
	},

	/**
	 * 导出供养汇总表
	 */
	onExportHZ : function() {

		var importDt = this.receiveMonth.value;
		var message;

		if (importDt)
			message = '汇总' + importDt + '的供养发放。';
		else
			message = '如果没有[选择月份]，则默认汇总当月。';

		Ext.MessageBox.confirm('供养', message + '您,确定导出供养发放汇总表吗?',
				function(btn) {
					if (btn == 'yes') {
						var url = ExtJ.getActionPath(
								'com.suyuan.jbyl.action.MtProvideOptionAction',
								'exportExcelHZ');
						ExtJ.doExport({
							url : url,
							params : {
								importDt : importDt,
								orgId : this.orgId
							}
						});
					}
				}.createDelegate(this))

	},

	/**
	 * 导出供养明细表
	 */
	onExportMX : function() {

		var importDt = this.receiveMonth.value;
		var size = this.store.getTotalCount();

		if (size == 0) {
			ExtJ.showMessage('当前结果集为空，请先选择[按月份]查询数据!再导出供养发放明细');
			return;
		}
		
		var message;
		if (importDt)
			message = '导出[' + importDt + ']供养明细表';
		else
			message = '如果没有[选择月份]，则导出当月供养明细表';
			
		Ext.MessageBox.confirm('供养', message +'（市公司包含县公司）', function(btn) {
			if (btn == 'yes') {
				var url = ExtJ.getActionPath(
						'com.suyuan.jbyl.action.MtProvideOptionAction',
						'exportExcelMX');
				ExtJ.doExport({
					url : url,
					params : {
						importDt : importDt,
						orgId : this.orgId
					}
				});
			}
		}.createDelegate(this))
	},

	/**
	 * 
	 */
	onHB : function() {

		var records = this.grid.getSelectionModel().getSelections();
		if (!records[0]) {
			ExtJ.showMessage('请选择要合并的记录!');
			return;
		}

		var dw;
		var status;
		var dwdm = records[0].data.dwdm;
		var ids = [];
		for (var i = 0; i < records.length; i++) {
			ids[i] = records[i].data.id;
			if(dwdm != records[i].data.dwdm){
				dw = "02";
				break;
			}
			if(records[i].data.status == "1"){
				status = "02";
				break;
			}
		}

		if (dw == "02") {
			ExtJ.showMessage('只能选择相同单位的人员');
			return;
		}
		if (status == "02") {
			ExtJ.showMessage('只能选择红色标记!');
			return;
		}
		
		if (!ids)
			return;

		var store = this.store;
		// for (var index = 0; index < this.store.getCount(); index++) {
		//			
		// }
		system.ryxxgl.zzrygl.SpOrgSelectDialog.prototype.onOK = function() {
			var node = this.tree.getChecked();
			if (node.length == 0) {
				ExtJ.showMessage('请选择你要合并到的单位！');
				return;
			}
			var corpId = node[0].id;
			var corpName = node[0].text;
			Ext.MessageBox.confirm('合并', '您,确定合并到' + corpName + '吗?', function(
					btn) {
				if (btn == 'yes') {
					var url = ExtJ.getActionPath(
							'com.suyuan.jbyl.action.MtProvideOptionAction',
							'HB');
					ExtJ.doExport({
						url : url,
						params : {
							corpId : corpId,
							ids : ids
						}
					});
					store.reload();
					this.close();
				}
			}.createDelegate(this))

		}
		var wind = new system.ryxxgl.zzrygl.SpOrgSelectDialog({
			modal : true,
			editForm : this.centerPanel
		});
		wind.show();
	}
})